<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Projeto Interdiciplinar
 * Gurpo 1 - Primeira turma do curso de Aux Info da Escom Brasília
 * Criado em: 23/11/2012, 09:13:23
 * Description of c_visitante
 *
 *  * @author 2 Sgt Lemoel, 
 *         3 Sgt Albuquerque,
 *         3 Sgt Azambuja,
 *         3 Fabio Moura
 * @since 11/2012
 * @version 1
 */
class C_Visitante extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('m_visitante');
    }

    public function formVisitante() {

        $this->load->model('m_usuario');
        $this->load->model('m_dependencia');
        $this->load->model('m_parte');

        /*
         * Existe documento ? true ou false ?
         */
        if ($this->m_parte->isSetParte() === TRUE) {
            /*
             * O objeto pode ser criado desta forma ou apenas usado assim
             * $this->m_usuario->cmbAcompanhante(); por exemplo
             */
            $objUsuario = new M_Usuario();
            $objSessao = new M_Dependencia();

            /*
             * Gerando o toke para envio para o form da view
             */
            $dados['token'] = $this->m_tools->geraToken();

            /*
             * Gravando o token na session
             */
            $this->session->set_userdata('token', $dados['token']);

            $idt = NULL;
            $dados['comboAcompanhante'] = $objUsuario->cmbAcompanhante($idt);
            $dados['comboSessao'] = $objSessao->cmbDependencia();

            $this->loadView('visitante/v_formVisitante', $dados, CmtGda);
        } else{
            $msg = $this->session->userdata('pstGradSigla'). '- ('. $this->session->userdata('idt').') '. $this->session->userdata('nomeGuerra').'<br/>';
            $msg .= 'O Sr. ainda não cadastrou um documento hoje!';
            $this->m_tools->setAlertMsg('erro', $msg, 'ERRO');
            $this->m_tools->go('../c_parte/formParte/');
        }
    }

    public function validaFormVisitante() {

        $dados['IDT'] = trim($this->input->post('iIdt'));
        $dados['NOME'] = trim($this->input->post('iNomeCompleto'));
        $dados['PARTE_ID'] = trim($this->session->userdata('parteId'));
        $dados['DEPENDENCIA_ID'] = trim($this->input->post('cmbSessao'));
        $dados['ACOMPANHANTE_IDT'] = trim($this->input->post('cmbAcompanhante'));
        $dados['PLACA'] = trim($this->input->post('iPlaca'));
        $dados['MOTIVO'] = trim($this->input->post('motivo'));
        $dados['MODELO'] = trim($this->input->post('iModelo'));
        $dados['MARCA'] = trim($this->input->post('iMarca'));
        $dados['COR'] = trim($this->input->post('iCor'));
        $token = trim($this->input->post('token'));

        if ($token == $this->session->userdata('token')) {

            if (
                    !empty($dados['IDT']) &&
                    !empty($dados['NOME']) &&
                    !empty($dados['PARTE_ID']) &&
                    !empty($dados['DEPENDENCIA_ID']) &&
                    !empty($dados['ACOMPANHANTE_IDT']) &&
                    !empty($dados['MOTIVO'])
            ) {
                $objVisitante = new M_Visitante();
                echo ($objVisitante->gravaVisitante($dados));
            }

            //fim token  
        } else {
            echo FALSE;
        }
    }

    public function validaFormVisitanteEditar() {

        /*
         * Data e hora da entrada no quartel
         */
        $horaEntrada = trim($this->input->post('cmbHorasEntrada'));
        $minEntrada = trim($this->input->post('cmbMinEntrada'));
        $segEntrada = trim($this->input->post('cmbSegEntrada'));
        $dtHoraEntrada = $this->m_tools->converteData(trim($this->input->post('dtEntrada'))) . ' ' . $horaEntrada . ':' . $minEntrada . ':' . $segEntrada;


        /*
         * Data e hora da saida
         */
        $dtSaida = trim($this->input->post('dtSaida'));

        if (!empty($dtSaida)) {
            $horaSaida = trim($this->input->post('cmbHorasSaida'));
            $minSaida = trim($this->input->post('cmbMinSaida'));
            $segSaida = trim($this->input->post('cmbSegSaida'));
            $dados['DT_HORA_FIM'] = $this->m_tools->converteData($dtSaida) . ' ' . $horaSaida . ':' . $minSaida . ':' . $segSaida;
        }

        $dados['IDT'] = trim($this->input->post('iIdt'));
        $dados['NOME'] = trim($this->input->post('iNomeCompleto'));
        $dados['PARTE_ID'] = trim($this->session->userdata('parteId'));
        $dados['DEPENDENCIA_ID'] = trim($this->input->post('cmbSessao'));
        $dados['ACOMPANHANTE_IDT'] = trim($this->input->post('cmbAcompanhante'));
        $dados['PLACA'] = trim($this->input->post('iPlaca'));
        $dados['MOTIVO'] = trim($this->input->post('motivo'));
        $dados['MODELO'] = trim($this->input->post('iModelo'));
        $dados['MARCA'] = trim($this->input->post('iMarca'));
        $dados['COR'] = trim($this->input->post('iCor'));
        $dados['DT_HORA_INICIO'] = $dtHoraEntrada;
        $token = trim($this->input->post('token'));

        if ($token == $this->session->userdata('token')) {

            if (
                    !empty($dados['IDT']) &&
                    !empty($dados['NOME']) &&
                    !empty($dados['PARTE_ID']) &&
                    !empty($dados['DEPENDENCIA_ID']) &&
                    !empty($dados['ACOMPANHANTE_IDT']) &&
                    !empty($dados['MOTIVO'])
            ) {
                $objVisitante = new M_Visitante();
                echo ($objVisitante->updateVisitante($dados));
            }

            //fim token  
        } else {
            echo FALSE;
        }
    }

    
    /*
     * Quanto vai pelo menu consultar Visitantes
     */
    public function listarVisitante() {

        $this->load->model('m_parte');

        $dados['parteId'] = trim($this->session->userdata('parteId'));

        if (empty($dados['parteId'])) {

            //criar documento/seleciona um documento
            $this->m_tools->go('../c_parte/formParte', 'visitante');
            $this->m_tools->setAlertMsg('alert', 'Crie ou selecione um documento para depois lançar os visitantes!', 'ATENÇÃO');
        } else {

            $dados['dataInicio'] = $this->m_parte->getDataInicio($dados['parteId'])->row()->DATA_HORA_INICIO;

            $retorno = $this->m_visitante->listaVisitante($dados['parteId'])->result();

            $i = 1;
            $dados['visitantes'] = null;
            foreach ($retorno as $value) {

                $idtCrypt = "'" . $this->encrypt->encode($value->VISITANTE_IDT) . "'";

                $dados['visitantes'] .= "<tr class='gradeU' valign='middle' align='center' style='font-size: 12px ;text-transform:uppercase;'>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$i++ . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->VISITANTE_IDT . "<br/>" . @$value->NOME_VISITANTE . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DEP_DESC . '<br/>R-' . @$value->RAMAL_SESSAO_DESTINO . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->IDT_ACOMP . '<br/>' .
                        @$value->PST_GRAD_SIGLA_ACOMP .
                        ' ' . @$value->NOME_GUERRA . '<br/>' .
                        @$value->DEP_ACOMP . '<br/>' .
                        'R-' . @$value->RAMAL_ACOMP .
                        "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DT_HORA_INICIO . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DT_HORA_FIM . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->PLACA . "<br/>" . @$value->MARCA . "<br/>" . @$value->MODELO . "<br/>" . @$value->COR . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->MOTIVO . "</p></td>";
                $dados['visitantes'] .= '<td valign="middle">
                                          <p align="center" scope="col" >
                                            <a href="#" onclick = "cadVisitante()"><span class="ui-icon ui-icon-circle-plus" title="Novo Visitante"></span></a>
                                            <a href="#" onclick = "editarVisitante(' . @$idtCrypt . ',' . $dados['parteId'] . ')"><span class="ui-icon ui-icon-clipboard" title="Editar Visitante"></span></a>
                                            <a href="#" onclick = "excluirVisitante(' . @$idtCrypt . ',' . $dados['parteId'] . ')"><span class="ui-icon ui-icon-trash" title="Deletar Visitante"></span></a>
                                           </p>
                                       </td>';
                $dados['visitantes'] .= "</tr>";
            }
            
            $dados['acao'] = TRUE;
            $this->loadView('visitante/v_relVisitante', $dados);
        }
    }
    
    /*
     * Quando é selecionado a partir da relação de documentos/partes
     */
    public function listarVisitantePorDoc() {
        
        $dados['parteId'] = $this->encrypt->decode($this->input->post('dados'));
        
        $this->load->model('m_parte');

        if (!empty($dados['parteId'])) {

            $dados['dataInicio'] = $this->m_parte->getDataInicio($dados['parteId'])->row()->DATA_HORA_INICIO;

            $retorno = $this->m_visitante->listaVisitante($dados['parteId'])->result();

            $i = 1;
            $dados['visitantes'] = null;
            foreach ($retorno as $value) {

                $dados['visitantes'] .= "<tr class='gradeU' valign='middle' align='center' style='font-size: 12px ;text-transform:uppercase;'>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$i++ . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->VISITANTE_IDT . "<br/>" . @$value->NOME_VISITANTE . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DEP_DESC . '<br/>R-' . @$value->RAMAL_SESSAO_DESTINO . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->IDT_ACOMP . '<br/>' .
                                                                                                @$value->PST_GRAD_SIGLA_ACOMP .
                                                                                                ' ' . @$value->NOME_GUERRA . '<br/>' .
                                                                                                @$value->DEP_ACOMP . '<br/>' .
                                                                                                'R-' . @$value->RAMAL_ACOMP .
                                                                                                "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DT_HORA_INICIO . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->DT_HORA_FIM . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->PLACA . "<br/>" . @$value->MARCA . "<br/>" . @$value->MODELO . "<br/>" . @$value->COR . "</p></td>";
                $dados['visitantes'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->MOTIVO . "</p></td>";
                $dados['visitantes'] .= "</tr>";
            }
            
            $dados['acao'] = FALSE;
            
            $this->loadView('visitante/v_relVisitante', $dados);
        }
    }

    public function formVisitanteEditar() {

        $this->load->model('m_usuario');
        $this->load->model('m_dependencia');

        /*
         * trabalhando os dados do post
         */
        $dados = $this->input->post('dados');

        /*
         * Os dados foram concatenados no JavaScript aqui estamos 
         * separando para um array o delimitador é |
         */
        $dados = explode('|', $dados);
        $dados[0] = $this->encrypt->decode($dados[0]);

        $dadosVisitante = $this->m_visitante->dadosVisitanteEdicao($dados[0], $dados[1]);

        /*
         * Horario da chegada do visitante
         */
        $dados['horasEntrada'] = $this->m_tools->cmbHoras((int) date('H', strtotime($dadosVisitante['parte_visitante']->DT_HORA_INICIO)));
        $dados['minEntrada'] = $this->m_tools->cmbMinutos((int) date('i', strtotime($dadosVisitante['parte_visitante']->DT_HORA_INICIO)));
        $dados['segEntrada'] = $this->m_tools->cmbSegundos((int) date('s', strtotime($dadosVisitante['parte_visitante']->DT_HORA_INICIO)));
        $dados['dtEntrada'] = date('d/m/Y', strtotime($dadosVisitante['parte_visitante']->DT_HORA_INICIO));

        /*
         * Horario da saída do visitante
         */
        if (!empty($dadosVisitante['parte_visitante']->DT_HORA_FIM)) {
            $dados['horasSaida'] = $this->m_tools->cmbHoras((int) date('H', strtotime($dadosVisitante['parte_visitante']->DT_HORA_FIM)));
            $dados['minSaida'] = $this->m_tools->cmbMinutos((int) date('i', strtotime($dadosVisitante['parte_visitante']->DT_HORA_FIM)));
            $dados['segSaida'] = $this->m_tools->cmbSegundos((int) date('s', strtotime($dadosVisitante['parte_visitante']->DT_HORA_FIM)));
            $dados['dtSaida'] = date('d/m/Y', strtotime($dadosVisitante['parte_visitante']->DT_HORA_FIM));
        } else if (empty($dadosVisitante['parte_visitante']->DT_HORA_FIM)) {
            $dados['horasSaida'] = $this->m_tools->cmbHoras();
            $dados['minSaida'] = $this->m_tools->cmbMinutos();
            $dados['segSaida'] = $this->m_tools->cmbSegundos();
        }

        $dados['nomeVisitante'] = $dadosVisitante['visitante']->NOME;
        $dados['idtVisitante'] = $dadosVisitante['visitante']->IDT;
        
        if (!empty($dadosVisitante['veiculo']->PLACA)){
            $dados['placa'] = $dadosVisitante['veiculo']->PLACA;
            $dados['modelo'] = $dadosVisitante['veiculo']->MODELO;
            $dados['marca'] = $dadosVisitante['veiculo']->MARCA;
            $dados['cor'] = $dadosVisitante['veiculo']->COR;
        }
       
        $dados['motivo'] = $dadosVisitante['parte_visitante']->MOTIVO;
        $dados['comboAcompanhante'] = $this->m_usuario->cmbAcompanhante($dadosVisitante['parte_visitante']->IDT_ACOMPANHANTE);
        $dados['comboSessao'] = $this->m_dependencia->cmbDependencia($dadosVisitante['parte_visitante']->DEPENDENCIA_ID);


        /*
         * Gerando o toke para envio para o form da view
         */
        $dados['token'] = $this->m_tools->geraToken();

        /*
         * Gravando o token na session
         */
        $this->session->set_userdata('token', $dados['token']);

        $this->loadView('visitante/v_formVisitanteEditar', $dados);
    }

    public function excluirVisitante() {

        $dados = $this->input->post('dados');

        $dados = explode('|', $dados);

        $idt = $this->encrypt->decode($dados[0]);
        $parteId = $dados[1];

        if (is_numeric($idt) && !empty($idt) && is_numeric($parteId) && !empty($parteId)) {
            $resultado = $this->m_visitante->excluirVisitante($idt, $parteId);
            if ($resultado == TRUE) {
                $this->m_tools->setAlertMsg('sucesso', 'Visitante Excluido com Sucesso', 'Sucesso');
                $this->listarVisitante();
            } else if ($resultado != TRUE) {
                $this->m_tools->setAlertMsg('erro', 'Erro desconhecido ao excluir visitante!', 'Erro');
                $this->listarVisitante();
            }
        } else {
            $this->m_tools->erroGrave();
        }
    }

}

?>
